import { Request, Response } from 'express';

interface ToneMap {
  [key: string]: string;
}

/**
 * 文案生成控制器
 */
export const generateCopy = (req: Request, res: Response) => {
  try {
    const { topic, keywords, platforms, tone } = req.body;
    
    // 验证请求参数
    if (!topic || !keywords || !platforms || !platforms.length) {
      return res.status(400).json({
        success: false,
        message: '请提供必要的参数：主题、关键词和目标平台'
      });
    }
    
    // 根据不同平台生成不同的文案内容
    const contents = platforms.map((platform: string) => {
      let content = '';
      
      switch (platform) {
        case 'weibo':
          content = generateWeiboContent(topic, keywords, tone);
          break;
        case 'xiaohongshu':
          content = generateXiaohongshuContent(topic, keywords, tone);
          break;
        case 'wechat':
          content = generateWechatContent(topic, keywords, tone);
          break;
        case 'douyin':
          content = generateDouyinContent(topic, keywords, tone);
          break;
        default:
          content = generateDefaultContent(topic, keywords, tone);
      }
      
      return {
        platform,
        content
      };
    });
    
    res.status(200).json({
      success: true,
      contents
    });
  } catch (error) {
    console.error('文案生成失败:', error);
    res.status(500).json({
      success: false,
      message: '服务器内部错误'
    });
  }
};

/**
 * 微博文案生成
 */
function generateWeiboContent(topic: string, keywords: string[], tone: string): string {
  // 在实际项目中，这里可以接入AI模型或API
  const toneMap: ToneMap = {
    professional: '专业',
    casual: '轻松',
    humorous: '幽默',
    emotional: '情感'
  };
  
  const keywordText = keywords.join('、');
  return `#${topic}# 今天为大家带来${toneMap[tone] || ''}风格的分享！关键词：${keywordText}。这是一条示例微博文案，字数有限，内容简洁有力，包含话题标签和简短的号召性用语。点赞转发，抢先体验！`;
}

/**
 * 小红书文案生成
 */
function generateXiaohongshuContent(topic: string, keywords: string[], tone: string): string {
  // 在实际项目中，这里可以接入AI模型或API
  const keywordText = keywords.map(k => `#${k}`).join(' ');
  
  return `✨ ${topic} ✨\n\n大家好，今天我想和大家分享一下关于"${topic}"的心得体验~\n\n🌟 要点一：${keywords[0] || '产品特点'}\n通过深入使用，我发现...(此处是详细描述)\n\n🌟 要点二：${keywords[1] || '使用感受'}\n个人觉得...(此处是个人体验)\n\n🌟 总结\n整体来说，非常推荐大家尝试，确实是近期的新发现！\n\n${keywordText} #种草笔记 #好物分享`;
}

/**
 * 微信公众号文案生成
 */
function generateWechatContent(topic: string, keywords: string[], tone: string): string {
  // 在实际项目中，这里可以接入AI模型或API
  return `【${topic}】\n\n尊敬的读者，今天我们将为您深度解析"${topic}"相关内容。\n\n一、背景介绍\n${keywords[0] || '行业背景'}是当前市场的重要趋势，据统计...\n\n二、核心分析\n关于${keywords[1] || '核心要点'}，我们发现...\n\n三、实用建议\n1. ...\n2. ...\n3. ...\n\n最后，欢迎留言分享您的看法和经验。\n\n——————\n点击"在看"支持我们`;
}

/**
 * 抖音文案生成
 */
function generateDouyinContent(topic: string, keywords: string[], tone: string): string {
  // 在实际项目中，这里可以接入AI模型或API
  const tags = keywords.map(k => `#${k}`).join(' ');
  return `${topic}｜${keywords[0] || '吸引点'}\n这是我发现的超实用技巧\n不看后悔系列\n${tags} #抖音小技巧`;
}

/**
 * 默认文案生成
 */
function generateDefaultContent(topic: string, keywords: string[], tone: string): string {
  return `关于"${topic}"的内容，包含关键词：${keywords.join('、')}`;
} 